home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1998 November / Freeware November 1998.img / dist / fw_KLJxearth.idb / usr / freeware / src / xearth-1.0 / ppm.c.z / ppm.c
C/C++ Source or Header  |  1997-09-09  |  2KB  |  83 lines

  1. /*
  2.  * ppm.c
  3.  * kirk johnson
  4.  * july 1993
  5.  *
  6.  * RCS $Id: ppm.c,v 1.1 1995/11/21 18:59:16 swinokur Exp $
  7.  *
  8.  * Copyright (C) 1989, 1990, 1993, 1994, 1995 Kirk Lauritz Johnson
  9.  *
  10.  * Parts of the source code (as marked) are:
  11.  *   Copyright (C) 1989, 1990, 1991 by Jim Frost
  12.  *   Copyright (C) 1992 by Jamie Zawinski <jwz@lucid.com>
  13.  *
  14.  * Permission to use, copy, modify and freely distribute xearth for
  15.  * non-commercial and not-for-profit purposes is hereby granted
  16.  * without fee, provided that both the above copyright notice and this
  17.  * permission notice appear in all copies and in supporting
  18.  * documentation.
  19.  *
  20.  * Unisys Corporation holds worldwide patent rights on the Lempel Zev
  21.  * Welch (LZW) compression technique employed in the CompuServe GIF
  22.  * image file format as well as in other formats. Unisys has made it
  23.  * clear, however, that it does not require licensing or fees to be
  24.  * paid for freely distributed, non-commercial applications (such as
  25.  * xearth) that employ LZW/GIF technology. Those wishing further
  26.  * information about licensing the LZW patent should contact Unisys
  27.  * directly at (lzw_info@unisys.com) or by writing to
  28.  *
  29.  *   Unisys Corporation
  30.  *   Welch Licensing Department
  31.  *   M/S-C1SW19
  32.  *   P.O. Box 500
  33.  *   Blue Bell, PA 19424
  34.  *
  35.  * The author makes no representations about the suitability of this
  36.  * software for any purpose. It is provided "as is" without express or
  37.  * implied warranty.
  38.  *
  39.  * THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
  40.  * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS,
  41.  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT
  42.  * OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
  43.  * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
  44.  * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
  45.  * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  46.  */
  47.  
  48. #include "xearth.h"
  49. #include "kljcpyrt.h"
  50.  
  51. static void ppm_setup _P((FILE *));
  52. static void ppm_row _P((u_char *));
  53.  
  54. static FILE    *outs;
  55. static unsigned bytes_per_row;
  56.  
  57.  
  58. void ppm_output()
  59. {
  60.   compute_positions();
  61.   scan_map();
  62.   do_dots();
  63.   ppm_setup(stdout);
  64.   render(ppm_row);
  65. }
  66.  
  67.  
  68. static void ppm_setup(s)
  69.      FILE *s;
  70. {
  71.   outs          = s;
  72.   bytes_per_row = wdth * 3;
  73.  
  74.   fprintf(outs, "P6\n%d %d\n255\n", wdth, hght);
  75. }
  76.  
  77.  
  78. static void ppm_row(row)
  79.      u_char *row;
  80. {
  81.   assert(fwrite(row, 1, bytes_per_row, outs) == bytes_per_row);
  82. }
  83.